Hi Expert,
I need to create paging in datagridview and I was found a demo in programCall.com successfully and that’s link ProgramCall.com
Below is screen shot of downloaded demo Form:-

Now I update this downloaded code and add a check box column in zeroth (0) index of datagridview:-
Below screen shot is update.

Here is my question; when I have checked a checkbox in first page and after that move to Second page to perform any task after returning in first page the my checked checkboxes is unchecked, I want to maintain its checked status so any property or method is there to maintain datagridview checkbox checked status or else.
Below I am giving you my updated code:-
Form1.cs:-
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Globalization; namespace DatagridviewPagination { public partial class Form1 : Form { private int CurrentPage = 1; int PagesCount = 1; int pageRows = 10; BindingList<Employee> Baselist = null; BindingList<Employee> Templist = null; public Form1() { InitializeComponent(); DataGridViewCheckBoxColumn CheckboxColumn = new DataGridViewCheckBoxColumn(); CheckboxColumn.TrueValue = true; dataGridView1.Columns.Add(CheckboxColumn); dataGridView1.Rows.Add(1); dataGridView1.Columns[0].HeaderText = "Select"; dataGridView1.Columns[0].Width = 50; } private void Form1_Load(object sender, EventArgs e) { Baselist = FillDataforGrid(); PagesCount = Convert.ToInt32(Math.Ceiling(Baselist.Count * 1.0 / pageRows)); CurrentPage = 1; RefreshPagination(); RebindGridForPageChange(); } //Method to generate temporary data private BindingList<Employee> FillDataforGrid() { BindingList<Employee> list = new BindingList<Employee>(); for (int i = 1; i <= 20; i++) { Employee obj = new Employee(i, "ProgramCall.com" + i.ToString(), "Finance" + i.ToString()); list.Add(obj); } return list; } private void RebindGridForPageChange() { //Rebinding the Datagridview with data int datasourcestartIndex = (CurrentPage - 1) * pageRows; Templist = new BindingList<Employee>(); for (int i = datasourcestartIndex; i < datasourcestartIndex + pageRows; i++) { if (i >= Baselist.Count) break; Templist.Add(Baselist[i]); } dataGridView1.DataSource = Templist; dataGridView1.Refresh(); } //Method that handles the pagination button clicks private void ToolStripButtonClick(object sender, EventArgs e) { try { ToolStripButton ToolStripButton = ((ToolStripButton)sender); //Determining the current page if (ToolStripButton == btnBackward) CurrentPage--; else if (ToolStripButton == btnForward) CurrentPage++; else if (ToolStripButton == btnLast) CurrentPage = PagesCount; else if (ToolStripButton == btnFirst) CurrentPage = 1; else CurrentPage = Convert.ToInt32(ToolStripButton.Text, CultureInfo.InvariantCulture); if (CurrentPage < 1) CurrentPage = 1; else if (CurrentPage > PagesCount) CurrentPage = PagesCount; //Rebind the Datagridview with the data. RebindGridForPageChange(); //Change the pagiantions buttons according to page number RefreshPagination(); } catch (Exception) { } } private void RefreshPagination() { ToolStripButton[] items = new ToolStripButton[] { toolStripButton1, toolStripButton2, toolStripButton3, toolStripButton4, toolStripButton5 }; //pageStartIndex contains the first button number of pagination. int pageStartIndex = 1; if (PagesCount > 5 && CurrentPage > 2) pageStartIndex = CurrentPage - 2; if (PagesCount > 5 && CurrentPage > PagesCount - 2) pageStartIndex = PagesCount - 4; for (int i = pageStartIndex; i < pageStartIndex + 5; i++) { if (i > PagesCount) { items[i - pageStartIndex].Visible = false; } else { //Changing the page numbers items[i - pageStartIndex].Text = i.ToString(CultureInfo.InvariantCulture); //Setting the Appearance of the page number buttons if (i == CurrentPage) { items[i - pageStartIndex].BackColor = Color.Black; items[i - pageStartIndex].ForeColor = Color.White; } else { items[i - pageStartIndex].BackColor = Color.White; items[i - pageStartIndex].ForeColor = Color.Black; } } } //Enabling or Disalbing pagination first, last, previous , next buttons if (CurrentPage == 1) btnBackward.Enabled = btnFirst.Enabled = false; else btnBackward.Enabled = btnFirst.Enabled = true; if (CurrentPage == PagesCount) btnForward.Enabled = btnLast.Enabled = false; else btnForward.Enabled = btnLast.Enabled = true; } } }
Employee.cs:-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatagridviewPagination
{
class Employee
{
public Employee(int empid, string empname, string empdept)
{
this.empId = empid;
this.empName = empname;
this.empDept = empdept;
}
private int empId;
public int Empid
{
get { return empId; }
set { empId = value; }
}
private string empName;
public string EmpName
{
get { return empName; }
set { empName = value; }
}
private string empDept;
public string EmpDept
{
get { return empDept; }
set { empDept = value; }
}
}
}Thank You in Advanced!
Vijay Shukla
08-Jul-2013